Skip to main content

异常处理机制

简介

这一章我们来介绍一下 异常处理的引导类 Illuminate\Foundation\Bootstrap\HandleExceptions

如图:

file

这个类的功能:是替换 PHP 系统默认报错信息提示的处理函数,我们在 Laravel 出现报错时,看到的界面就是通过这里进行更换的。

正文

先贴代码 Illuminate\Foundation\Bootstrap\HandleExceptions 类的 bootstrap 方法

public function bootstrap(Application $app)
{
$this->app = $app;

error_reporting(-1);

set_error_handler([$this, 'handleError']);

set_exception_handler([$this, 'handleException']);

register_shutdown_function([$this, 'handleShutdown']);

if (! $app->environment('testing')) {
ini_set('display_errors', 'Off');
}
}
  • 第一个 $this->app = $app; 给当前对象的 app 属性赋值,记录容器对象
  • 第二个 error_reporting(-1);:设置报告所有 PHP 错误 ;具体 error_reporting 方法。。。看这里
  • 第三个 set_error_handler([$this, 'handleError']);:将当前对象的 handleError 方法设置为错误处理函数,替换掉系统默认的处理函数;具体 set_error_handler 方法。。。看这里
  • 第四个 set_exception_handler([$this, 'handleException']);:将当前对象的 handleException 方法设置为异常处理函数,替换掉系统默认的处理函数;具体 set_exception_handler 方法。。。看这里
  • 第五个 register_shutdown_function([$this, 'handleShutdown']);:将当前对象的 handleShutdown 方法设置为 PHP 中止时执行的函数;具体 register_shutdown_function 方法。。。看这里
  • 第六个
if (! $app->environment('testing')) {
ini_set('display_errors', 'Off');
}

检测当前是否是 testing 运行环境,是则默认为 PHP 的错误显示。如果不是 testing 环境则关闭错误显示。